home *** CD-ROM | disk | FTP | other *** search
AMOS Source Code | 1992-09-11 | 2.3 KB | 84 lines |
- Dim PL(3,1),SH(39,4),F(21,25)
- Gosub INIT
- BL=1 : MO=1 : SH=1 : LE=1
- Gosub UPDAT
- Do
- Wait Vbl
- M=Mouse Key : X=X Mouse-128 : Y=Y Mouse : I$=Inkey$
- If(Y<SCY or Y>77+SCY) Then S=1 : Add Y,-40 : BX=X/16 : BY=Y/16 Else S=0 : Add Y,-SCY
- If I$=Cup$ Then SCY=Max(SCY-8,32) : Screen Display 1,128,SCY,,
- If I$=Cdown$ Then SCY=Min(SCY+8,224) : Screen Display 1,128,SCY,,
- If S=0 and M Then MO=1 : BL=X/16+(Y/16)*20
- If BL>79 and BL<84 Then MO=2 : P=BL-80
- If BL=84 or BL=85 Then MO=4+(Y mod 16)/8 : BL=0
- If MO=4 Then Gosub LADEN : MO=3
- If MO=5 Then Gosub SPEICHERN : MO=3
- If BL>79 and MO=1 Then MO=3
- If BL=86 Then MO=3 : Add LE,1,1 To 99 : Gosub UPDAT : BL=0
- If BL=89 Then MO=3 : Add LE,-1,1 To 99 : Gosub UPDAT : BL=0
- If S=1 and M=1 and MO=1 Then F(BX,BY)=BL : Put Block BL+1,BX*16,BY*16
- If S=1 and M=2 and MO=1 Then F(BX,BY)=0 : Put Block 1,BX*16,BY*16
- If S=0 and SH=0 Then Show : SH=1
- If S=1 and M and MO=2 Then PL(P,0)=BX : PL(P,1)=BY : Sprite P*2,BX*16+128,BY*16+40,P*16+25
- If SH and S=1 Then SH=0 : S=0 : Hide
- If SH=0 and S=1 Then SH=1 : Show
- Sprite 0,PL(0,0)*16+128,PL(0,1)*16+40,25
- Loop
- End
- UPDAT:
- Screen 1
- Locate 14,9 : Print LE;" ";
- Screen 0
- Wait 5
- Return
- LADEN:
- If Exist("TankLevels/"+Str$(LE)-" ")=0 Then Boom : Return
- Erase 10 : Reserve As Data 10,328
- Bload "TankLevels/"+Str$(LE)-" ",Start(10)
- ST=Start(10)
- For A=0 To 3
- PL(A,0)=Peek(ST+A*2)
- PL(A,1)=Peek(ST+A*2+1)
- Next
- For Y=0 To 15
- For X=0 To 19
- F(X,Y)=Peek(ST+Y*20+X+8)
- Put Block 1+F(X,Y),X*16,Y*16
- Next
- Next
- Return
- SPEICHERN:
- ST=Start(10)
- For A=0 To 3
- Doke ST+A*2,PL(A,0)*256+PL(A,1)
- Next
- For Y=0 To 15
- For X=0 To 19
- Poke ST+Y*20+X+8,F(X,Y)
- Next
- Next
- Bsave "TankLevels/"+Str$(LE)-" ",Start(10) To Start(10)+328
- Return
- INIT:
- Unpack 9 To 1
- For A=0 To 79
- Get Block A+1,(A mod 20)*16,(A/20)*16,16,16
- Next
- Paper 0 : Pen 1
- Screen Open 0,320,256,8,0
- Curs Off : Flash Off : Paper 0 : Pen 1 : Cls
- Get Sprite Palette
- For A=0 To 15 : Colour A+16,Colour(A) : Next
- For A=0 To 7 : Colour A+8,Colour(A) : Next
- Screen 1 : Get Palette 0
- Screen 0
- Screen Show 0
- Erase 10 : Reserve As Data 10,328
- For P=0 To 3
- PL(P,0)=-1
- PL(P,1)=-1
- Next
- SCY=50
- Screen To Front 1
- Limit Mouse 128,32 To 447,303
- Return